﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using Sistema.Modelo.Financeiro;
namespace Sistema.Dao.Financeiro
{
    class daoCategoriaCartao
    {

        Mensagens men = new Mensagens();
        SqlDataAdapter dr;
        String Mensagem;
        ///
        ///
        ///
        ///
        public String getMensagem()//metodo de retorno de resultado de pesquisa
        {
            return Mensagem;
        }
        ///
        ///
        ///
        ///
        public SqlDataAdapter getSelect()//metodo de retorno de resultado de pesquisa
        {
            return dr;
        }
        ///
        ///
        ///
        ///
        public void SelecionarBanco(String Busca, int selecao)
        {
            try
            {
                String[] stringconecao = new String[5];//string em array para armazenar mais de um tipo de selecao
                stringconecao[0] = "SELECT * FROM Categoria_Cartao ORDER BY Categoria_Cartao_Descricao;";
                stringconecao[1] = "SELECT * FROM Categoria_Cartao WHERE Credito_Debito_Codigo like '%" + Busca + "%' ORDER BY Categoria_Cartao_Descricao;";
                stringconecao[2] = "SELECT * FROM Categoria_Cartao WHERE Categoria_Cartao_Descricao like '%" + Busca + "%' ORDER BY Categoria_Cartao_Descricao;";

                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL = stringconecao[selecao];
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);
                this.dr = new SqlDataAdapter(crm);
                sqlconn.Close();
            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }
        }
        ///
        ///
        ///
        ///
        public void ExecutarProcedimentoBanco(modCategoriaCartao a, int Procedimento)
        {
            try
            {
                int Categoria_Cartao_Codigo = Convert.ToInt16(null);
                int Credito_Debito_Codigo = Convert.ToInt16(null);
                String Categoria_Cartao_Descricao = null;
                DateTime Data_Cadastro = Convert.ToDateTime(null);


                if (Procedimento == 1)
                {//Cadastrar

                    Credito_Debito_Codigo = a.Credito_Debito_Codigo;
                    Categoria_Cartao_Descricao = a.Categoria_Cartao_Descricao;
                }
                ////////////////////
                else if (Procedimento == 2)
                {//Alterar
                    Categoria_Cartao_Codigo = a.Categoria_Cartao_Codigo;
                    Credito_Debito_Codigo = a.Credito_Debito_Codigo;
                    Categoria_Cartao_Descricao = a.Categoria_Cartao_Descricao;
                }
                ////////////////////
                else if (Procedimento == 3)
                {//Excluir
                    Categoria_Cartao_Codigo = a.Categoria_Cartao_Codigo;
                    Credito_Debito_Codigo = a.Credito_Debito_Codigo;
                    Categoria_Cartao_Descricao = a.Categoria_Cartao_Descricao;
                }
                ////////////////////

                StringConecao con = new StringConecao();
                string sqlcon = con.getconecao();
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                string mSQL;//variavel passa o nome da procidore
                mSQL = "SP_Update_Categoria_Cartao";
                SqlCommand crm = new SqlCommand(mSQL, sqlconn);

                crm.CommandType = CommandType.StoredProcedure;
                crm.Parameters.Add("@Categoria_Cartao_Codigo", SqlDbType.VarChar).Value = Categoria_Cartao_Codigo;
                crm.Parameters.Add("@Credito_Debito_Codigo", SqlDbType.VarChar).Value = Credito_Debito_Codigo;
                crm.Parameters.Add("@Categoria_Cartao_Descricao", SqlDbType.VarChar).Value = Categoria_Cartao_Descricao;
                crm.Parameters.Add("@Data_Cadastro", SqlDbType.VarChar).Value = "";
                crm.Parameters.Add("@Operacao", SqlDbType.VarChar).Value = Procedimento;
                crm.Parameters.Add("@Novocodigo", SqlDbType.VarChar).Value = "";
                crm.Parameters.Add("@Retorno", SqlDbType.VarChar).Value = "";

                var returnParameter = crm.Parameters.Add("@Retorno", SqlDbType.Int);//comando para selecionar o retorno da procedimento
                returnParameter.Direction = ParameterDirection.ReturnValue;//retorno do procedimento

                crm.ExecuteNonQuery();
                Mensagem = men.getGerarMensagem(returnParameter.Scale.ToString());//recebendo a variavel
                sqlconn.Close();


            }
            catch (Exception ex)
            {
                Mensagem = "Erro na execução com o banco de dados" + "\n" + Convert.ToString(ex);
            }

        }
        ///
        ///
        ///
        ///
    }

}
